package com.tedu.api.io;

import org.apache.commons.imaging.ImageFormats;
import org.apache.commons.imaging.ImageReadException;
import org.apache.commons.imaging.ImageWriteException;
import org.apache.commons.imaging.Imaging;
import org.junit.jupiter.api.Test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * 图片   流
 *
 * Apache Commons Imaging   第三方库
 * 提供图片读写操作，处理格式：jpg，png，tiff，gif等
 *
 *
 * 准备：1.项目结构Maven ---在线下载jar【压缩包--很多类--包导入】
 *      2.准备一张小图片
 *      3.直到maven仓库网站--->百度，搜：mvn仓库
 *      https://mvnrepository.com/
 *      maven仓库搜：commons-imaging
 *
 *      仓库坐标【理解为jar的下载链接】
 *      <dependency>
 *     <groupId>org.apache.commons</groupId>
 *     <artifactId>commons-imaging</artifactId>
 *     <version>1.0-alpha2</version>
 * </dependency>
 * 第三方库---高手提供好类库：图片格式，图片大小等！
 *
 *
 * Apache Commons Imaging
 * jar中很多类，静态方法设置类中
 * Imaging类-->getBufferedImage()
 * 读操作：可以读到宽度，高度，像素信息等
 */
public class ImageFile {
    @Test
    public void testImageR() throws IOException, ImageReadException {
        //File 文件：获取文件路径
        File file=new File("ganyu.png");
        //读取图片文件信息
        BufferedImage bi=Imaging.getBufferedImage(file);
        //打印 ganyu.png 文件信息：宽高
        int width= bi.getWidth();    //宽
        int height= bi.getHeight();  //高
        System.out.println("图片宽："+width+"高"+height);
    }

    /**
     * Apache Commons Imaging
     * 写操作：先进性读操作，然后写出图片
     * Imaging图片类：静态写出方法
     * 指定图片格式：ImageFormats 图片格式类--静态属性
     * Imaging.writeImage(读入图片，写出图片，指定图片格式，null)
     */
    @Test
    public void testImageW() throws IOException, ImageReadException, ImageWriteException {
        //读入图片
        File file=new File("ganyu.png");
        BufferedImage src=Imaging.getBufferedImage(file);
        //写出图片
        File desc=new File("写出图片.png");
        Imaging.writeImage(src,desc, ImageFormats.PNG,null);
        System.out.println("写出成功~~");

    }
}
